package com.oneproject.domain;

import java.util.Collection;
import java.util.List;

/**
 * 工作单元
 *
 * @author 马文韬
 * @date 2018/9/7
 * @version 1.0
 */
public interface UnitOfWork {

    <E extends Entity> E selectByPrimaryKey(Object id, Class<E> entiryClazz);

    <E extends Entity> Collection<E> selectAll(Class<E> entryClazz);

    <E extends Entity> List<E> select();

    <E extends Entity> void insert(E entity);

    <E extends Entity> void delete(E entity);

    <E extends Entity> void update(E entity);

    /**
     * 提交所有变更
     */
    void commit();

    /**
     * 回滚所有变更
     */
    void rollback();

}
